home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / sparkint.lha / MUSOK.S
Text File  |  1987-01-01  |  14KB  |  943 lines

  1.  
  2. ;                  copper list example
  3. ;
  4.  
  5. bwobflag:    dc.w    0
  6. execbase:    equ    4
  7. dmacon:        equ    $dff096
  8. oldopenlibary:    equ    -408
  9.  
  10.  
  11. main:    move.l    execbase,a6
  12.     lea    gfxname,a1
  13.     move.l    #0,d0
  14.     jsr    oldopenlibary(a6)
  15.     tst    d0
  16.     beq    error_no_libary
  17.     move.l    d0,gfxbase
  18.     move.l    d0,a0
  19.     add.l    #$32,a0
  20.     move.w    #$0080,dmacon
  21.     move.l    (a0),oldcopper
  22.     move.l    #newcopper,(a0)
  23.     move.w    #$8080,dmacon
  24.     bsr    scrapsetup
  25.     jsr    mt_init
  26.     move.w    #$0020,$dff096
  27.  
  28.     move.w    #$4000,$dff09a
  29.     move.l    $6c,store
  30.     move.l    #inter,$6c
  31.     move.w    #$c000,$dff09a
  32.     
  33. wait:    andi.b    #$40,$bfe001
  34.     bne    wait
  35.     
  36.     move.w    #$000f,$dff096
  37.     move.w    #$4000,$dff09a
  38.     move.l    store,$6c
  39.     move.w    #$c000,$dff09a
  40.     clr.l    d0
  41.     ;jsr     start    
  42.     move.l    gfxbase,a0
  43.     add.l    #$32,a0
  44.     move.w    #$8020,$dff096
  45.     move.w    #$0080,dmacon
  46.     move.l    oldcopper,(a0)
  47.     move.w    #$8080,dmacon
  48.  
  49. error_no_libary:
  50.     rts    
  51. gfxname:
  52.     dc.b    "graphics.library",0
  53.     even
  54.  
  55. inter:    jsr    mt_music
  56.     bsr    scraper
  57.     dc.w    $4ef9
  58. store:    dc.l    0
  59.  
  60.  
  61.  
  62. textup:    move.l    #$71000,a5
  63.     move.w    #20,d7
  64. nextch:    addq.l    #2,a5
  65.     move.l    a5,a0
  66.     move.l    #$70000,a1
  67.     bsr    getcharval
  68.     move.l    chart,d3
  69.     add.l    d3,a1
  70.     move.w    #20,d0
  71. pbit:    move.w    (a1)+,(a0)
  72.     add.l    #$5c,a0
  73.     dbr    d0,pbit
  74.     dbr    d7,nextch
  75.     rts
  76.  
  77. textpoint:    dc.l    0,0
  78.  
  79. ss:    dc.b     0
  80. sstore:    dc.b    0,0,0
  81.  
  82. chart:    dc.w    0
  83. char:    dc.w    0,0,0
  84.  
  85. getcharval:
  86.     lea    text,a6
  87.     move.l    textpoint,d0
  88.     add.l    d0,a6
  89.     move.b    (a6),d0
  90.     cmp.w    #$ff,d0
  91.     beq    resetall
  92.     move.b    d0,sstore
  93.     move.w    ss,d0
  94.     sub.w    #$31,d0
  95.     mulu    #$20,d0
  96.     move.w    d0,char
  97.     addq.l    #1,textpoint
  98.     rts
  99.     
  100.  
  101. RESETALL:
  102.     move.l    #0,textpoint
  103.     bra    getcharval
  104.  
  105. text:    DC.B    `        SPARK        `
  106.     dc.b    `OF XXX INTERNATIONAL `
  107.     DC.B    `      PRESENTS       `
  108.     DC.B    `    THE XXX INTRO    `
  109.     DC.B    ` ALL CODING BY SPARK `
  110.     DC.B    `   GRAFIX BY TURBO   `
  111.     DC.B    `    MUSIC BY SPARK   `
  112.     DC.B    `  THIS MESSAGE IS A  `
  113.     DC.B    `    LOAD OF SHIT     `
  114.     DC.B    ` SO I THINK I WILL GO`
  115.     DC.B    `   BYE BYE  SUCKERS  `
  116.     DC.B    `                     `,$FF
  117.  
  118.     EVEN
  119. scrapsetup:
  120.     lea    xbps,a1
  121.     lea    xbpf,a2
  122.     move.w    #$FD2,d0
  123. suloop:    move.w    d0,(a1)
  124.     add.w    #$5c,d0
  125.     add.l    #16,a1
  126.     cmp.l    a1,a2
  127.     bgt    suloop
  128.     rts
  129.  
  130. tablepo:    dc.b    0,0
  131. tablepos:    dc.b    0,0,0,0
  132.  
  133. scraper:
  134.     lea    xbps,a1
  135.     lea    xscs,a4
  136.     lea    xscf-16,a5
  137. repbit:    move.w    16(a1),d0
  138.     sub.w    #$5c,d0
  139.     move.w    d0,(a1)
  140.     move.w    16(a4),(a4)
  141.     add.l    #16,a4
  142.     add.l    #16,a1
  143.     cmp.l    a4,a5
  144.     bgt    repbit
  145.                 ;newvalue
  146.     move.l    tablepo,d0
  147.     lea    wobtable,a4
  148.     add.l    d0,a4
  149.     lea    xbpf-16,a1
  150.     lea    xscf-16,a3
  151.     
  152. wobloop:
  153.     bsr    nextwob    
  154.     add.l    #2,d0
  155.     lea    wobtable,a4    
  156.     add.l    d0,a4
  157.     move.l    d0,tablepo
  158.     cmp.w    #$abcd,(a4)
  159.     beq    ressit
  160.     rts
  161.  
  162.  
  163. ressit:
  164.     lea    wobtable,a4
  165.     move.l    #0,tablepo
  166.     bsr    textup    
  167. nextwob:
  168.     cmp.w    #$abcd,(a4)
  169.     beq    ressit    
  170.     move.w    (a4),d1
  171.     cmp.w    #$e000,d1
  172.     bhi    suber
  173.  
  174. adder:    move.w    (a3),d2
  175.     add.w    d1,d2
  176.     cmp.w    #$ff,d2
  177.     bhi    addone
  178.     move.w    d2,(a3)
  179.     rts
  180.  
  181. addone:    sub.w    #$10,d2
  182.     move.w    d2,d1s
  183.     move.b    #0,d1s
  184.     move.w    d1s,d2
  185.     move.w    d2,(a3)
  186.     sub.w    #2,(a1)
  187.     rts            
  188.  
  189. suber:    move.w    (a3),d2
  190.     add.w    d1,d2
  191.     cmp.w    #$f000,d2
  192.     bhi    subone
  193.     move.w    d2,(a3)
  194.     rts
  195.  
  196. subone:    add.w    #$10,d2
  197.     move.w    d2,d1s
  198.     move.b    #0,d1s
  199.     move.w    d1s,d2
  200.     move.w    d2,(a3)
  201.     add.w    #2,(a1)
  202.     rts            
  203.     
  204.  
  205. d1s:    dc.b    0
  206. d1store:dc.b    0
  207.  
  208.     
  209. wobtable:
  210.  
  211.     
  212.     blk.w    5,-$11
  213.     blk.w    5,-$22
  214.     blk.w    5,-$33
  215.     blk.w    5,-$44
  216.     blk.w    5,-$55
  217.     blk.w    6,-$66
  218.     blk.w    5,-$77
  219.     blk.w    5,-$88
  220.     blk.w    5,-$99
  221.     blk.w    6,-$aa
  222.     blk.w    8,-$BB
  223.  
  224.     blk.w    100,-$00
  225.  
  226.     BLK.W    2,-$55
  227.     BLK.W    2,-$44
  228.     BLK.W    2,-$33
  229.     BLK.W    2,-$22
  230.     BLK.W    2,-$11
  231.     BLK.W    2,00
  232.  
  233.     BLK.W    2,$11
  234.     BLK.W    2,$22
  235.     BLK.W    2,$33
  236.     BLK.W    2,$44
  237.     BLK.W    2,$55
  238.  
  239.     BLK.W    2,$55
  240.     BLK.W    2,$44
  241.     BLK.W    2,$33
  242.     BLK.W    2,$22
  243.     BLK.W    2,$11
  244.     BLK.W    2,00
  245.  
  246.     BLK.W    2,-$11
  247.     BLK.W    2,-$22
  248.     BLK.W    2,-$33
  249.     BLK.W    2,-$44
  250.     BLK.W    2,-$55
  251.  
  252.     BLK.W    2,-$55
  253.     BLK.W    2,-$44
  254.     BLK.W    2,-$33
  255.     BLK.W    2,-$22
  256.     BLK.W    2,-$11
  257.     BLK.W    2,00
  258.  
  259.     BLK.W    2,$11
  260.     BLK.W    2,$22
  261.     BLK.W    2,$33
  262.     BLK.W    2,$44
  263.     BLK.W    2,$55
  264.  
  265.     BLK.W    2,$55
  266.     BLK.W    2,$44
  267.     BLK.W    2,$33
  268.     BLK.W    2,$22
  269.     BLK.W    2,$11
  270.     BLK.W    2,00
  271.  
  272.     BLK.W    2,-$11
  273.     BLK.W    2,-$22
  274.     BLK.W    2,-$33
  275.     BLK.W    2,-$44
  276.     BLK.W    2,-$55
  277.  
  278.  
  279.     BLK.W    50,0
  280.     
  281.     BLK.W    30,-$11
  282.     BLK.W    30,$11
  283.     BLK.W    30,$11
  284.     BLK.W    30,-$11
  285.     BLK.W    50,0
  286.  
  287.     BLK.W    2,$55
  288.     BLK.W    2,$44
  289.     BLK.W    2,$33
  290.     BLK.W    2,$22
  291.     BLK.W    2,$11
  292.     BLK.W    2,00
  293.  
  294.     BLK.W    2,-$11
  295.     BLK.W    2,-$22
  296.     BLK.W    2,-$33
  297.     BLK.W    2,-$44
  298.     BLK.W    2,-$55
  299.     
  300.     BLK.W    2,-$55
  301.     BLK.W    2,-$44
  302.     BLK.W    2,-$33
  303.     BLK.W    2,-$22
  304.     BLK.W    2,-$11
  305.     BLK.W    2,00
  306.  
  307.     BLK.W    2,$11
  308.     BLK.W    2,$22
  309.     BLK.W    2,$33
  310.     BLK.W    2,$44
  311.     BLK.W    2,$55
  312.  
  313.  
  314.  
  315.     
  316.     blk.w    8,$BB
  317.     blk.w    6,$aa
  318.     blk.w    5,$99
  319.     blk.w    5,$88
  320.     blk.w    5,$77
  321.     blk.w    6,$66
  322.     blk.w    5,$55
  323.     blk.w    5,$44
  324.     blk.w    5,$33
  325.     blk.w    5,$22
  326.     blk.w    5,$11
  327.     Blk.w    50,0
  328.  
  329. endtab:    dc.w    $abcd,$abcd,$abcd,$abcd
  330.  
  331.     
  332.  
  333.  
  334.  
  335.  
  336. gfxbase:
  337.  
  338.     dc.l    0
  339.  
  340. oldcopper:
  341.  
  342.     dc.l    0
  343.  
  344.  
  345. newcopper:    
  346.     dc.w    $0100,$0000,$0180,0
  347.     dc.w    $0108,$000,$010a,$000    
  348.  
  349.     dc.w    $2c01,$fffe
  350.     DC.W     $0100,$5200
  351.     DC.W     $00E0,$0006,$00E4,$0006
  352.     dc.w    $00e8,$0006,$00ec,$0006
  353.     dc.w    $00f0,$0006
  354.  
  355.     dc.w    $00e2,$0000,$00e6,$2260
  356.     dc.w    $00ea,$44c0,$00ee,$6720
  357.     dc.w    $00f2,$8980
  358.         
  359.     dc.w    $0092,$0030,$0094,$00d8
  360.     dc.w    $008e,$1e01,$0090,$3eff
  361.  
  362.     dc.w    $0180,$0000,$0182,$0002,$0184,$0300,$0186,$0400
  363.     dc.w    $0188,$0004,$018a,$0500,$018c,$0005,$018e,$0006
  364.     dc.w    $0190,$0700,$0192,$0007,$0194,$0008,$0196,$0810
  365.     dc.w    $0198,$0009,$019a,$000a,$019c,$0920,$019e,$000b
  366.     dc.w    $01a0,$000c,$01a2,$000d,$01a4,$0b30,$01a6,$000e
  367.     dc.w    $01a8,$000f,$01aa,$0c40,$01ac,$0d50,$01ae,$0e60
  368.     dc.w    $01b0,$0f90,$01b2,$0fa0,$01b4,$0fb0,$01b6,$0fc0
  369.     dc.w    $01b8,$0fd0,$01ba,$0fe0,$01bc,$0ff0,$01be,$0fff
  370.  
  371.  
  372.  
  373.     dc.w    $d501,$fffe,$0100,$1200,$00e0,$0007
  374.     dc.w    $0108,$0030,$010a,$0030    
  375.     dc.w    $0092,$0030,$0094,$00d8
  376.     dc.w    $0182
  377. xcols:    dc.w    $0FF0,$00e2
  378. xbps:    dc.w    $a000,$0102
  379. xscs:    dc.w    $0000
  380.     dc.w    $d601,$fffe,$0182,$0FE0,$00e2,$a088,$0102,$0000
  381.     dc.w    $d701,$fffe,$0182,$0FD0,$00e2,$a088,$0102,$0000
  382.     dc.w    $d801,$fffe,$0182,$0FC0,$00e2,$a088,$0102,$0000
  383.     dc.w    $d901,$fffe,$0182,$0FB0,$00e2,$a088,$0102,$0000
  384.     dc.w    $da01,$fffe,$0182,$0FA0,$00e2,$a088,$0102,$0000
  385.     dc.w    $db01,$fffe,$0182,$0F90,$00e2,$a088,$0102,$0000
  386.     dc.w    $dc01,$fffe,$0182,$0F80,$00e2,$a088,$0102,$0000
  387.     dc.w    $dd01,$fffe,$0182,$0F70,$00e2,$a088,$0102,$0000
  388.     dc.w    $de01,$fffe,$0182,$0F60,$00e2,$a088,$0102,$0000
  389.     dc.w    $df01,$fffe,$0182,$0F50,$00e2,$a088,$0102,$0000
  390.     dc.w    $e001,$fffe,$0182,$0F30,$00e2,$a088,$0102,$0000
  391.     dc.w    $e101,$fffe,$0182,$0F20,$00e2,$a088,$0102,$0000
  392.     dc.w    $e201,$fffe,$0182,$0F10,$00e2,$a088,$0102,$0000
  393.     dc.w    $e301,$fffe,$0182,$0F00,$00e2,$a088,$0102,$0000
  394.     dc.w    $e401,$fffe,$0182
  395. xcolf:    dc.w    $0F00,$00e2
  396. xbpf:    dc.w    $0088,$0102
  397. xscf:    dc.w    $0000
  398.     dc.w    $7601,$fffe,$0182,$0202,$00e2,$8000,$0102,$0000
  399.     dc.w    $0100,$0000
  400.  
  401.     dc.w    $f201,$fffe
  402.     dc.w    $0100,$0000
  403. pal:    dc.w    $ffdf,$fffe,$0021,$fffe
  404.  
  405. end:    dc.w    $ffff,$fffe
  406.     
  407.  
  408. ;*********************************
  409. ;* SoundTracker VI - Playroutine *
  410. ;*                               *
  411. ;* Improved by Unknown of D.O.C  *
  412. ;* for SoundTracker IV and VI... *
  413. ;*********************************
  414.  
  415. mt_speed=$1f4
  416.  
  417. bsr.s    mt_init
  418. move.w    #$4000,$dff09a
  419. move.l    $00006c,mt_oldirq+2
  420. move.l    #mt_newirq,$00006c
  421. move.w    #$c000,$dff09a
  422.  
  423. mt_wait:
  424. btst    #6,$bfe001
  425. bne.s    mt_wait
  426.  
  427. move.w    #$000f,$dff096
  428. move.w    #$4000,$dff09a
  429. move.l    mt_oldirq+2,$00006c
  430. move.w    #$c000,$dff09a
  431. clr.l    d0
  432. rts
  433.  
  434. mt_init:
  435. move.l    #mt_snd1,mt_sample1
  436. move.l    #mt_snd2,mt_sample2
  437. move.l    #mt_snd3,mt_sample3
  438. move.l    #mt_snd4,mt_sample4
  439. move.l    #mt_snd5,mt_sample5
  440. move.l    #mt_snd6,mt_sample6
  441. move.l    #mt_snd7,mt_sample7
  442. move.l    #mt_snd8,mt_sample8
  443. move.l    #mt_snd9,mt_sample9
  444. move.l    #mt_snda,mt_sample10
  445. move.l    #mt_sndb,mt_sample11
  446. move.l    #mt_sndc,mt_sample12
  447. move.l    #mt_sndd,mt_sample13
  448. move.l    #mt_snde,mt_sample14
  449. move.l    #mt_sndf,mt_sample15
  450. move.l    #mt_sample1,a0
  451. clr.l    d0
  452. mt_clear:
  453. move.l    (a0,d0),a1
  454. clr.l    (a1)
  455. addq    #4,d0
  456. cmp.l    #$3c,d0
  457. bne.s    mt_clear
  458.  
  459. move.w    #0,$dff0a8
  460. move.w    #0,$dff0b8
  461. move.w    #0,$dff0c8
  462. move.w    #0,$dff0d8
  463. clr.l    mt_partnrplay
  464. clr.l    mt_partnote
  465. clr.l    mt_partpoint
  466.  
  467. move.b    mt_muzakdata+$1d6,mt_maxpart+1
  468. move.b    mt_muzakdata+$1d7,mt_kn1+1
  469. rts
  470.  
  471. mt_newirq:
  472. movem.l    d0-d7/a0-a6,-(a7)
  473. bsr.s    mt_music
  474. movem.l    (a7)+,d0-d7/a0-a6
  475. mt_oldirq:
  476. jmp    $000000
  477.  
  478. mt_music:
  479. addq.l    #1,mt_counter
  480. mt_cool:
  481. cmp.l    #6,mt_counter
  482. bne.s    mt_notsix
  483. clr.l    mt_counter
  484. bra    mt_rout2
  485.  
  486. mt_notsix:
  487. lea    mt_aud1temp,a6
  488. tst.b    3(a6)
  489. beq.s    mt_arp1
  490. move.l    #$dff0a0,a5        
  491. bsr.s    mt_arprout
  492.  
  493. mt_arp1:
  494. lea    mt_aud2temp,a6
  495. tst.b    3(a6)
  496. beq.s    mt_arp2
  497. move.l    #$dff0b0,a5
  498. bsr.s    mt_arprout
  499.  
  500. mt_arp2:
  501. lea    mt_aud3temp,a6
  502. tst.b    3(a6)
  503. beq.s    mt_arp3
  504. move.l    #$dff0c0,a5
  505. bsr.s    mt_arprout
  506.  
  507. mt_arp3:
  508. lea    mt_aud4temp,a6
  509. tst.b    3(a6)
  510. beq.s    mt_arp4
  511. move.l    #$dff0d0,a5
  512. bra.s    mt_arprout
  513. mt_arp4:
  514. rts
  515.  
  516. mt_arprout:
  517. tst.w    24(a6)
  518. beq.s    mt_noslide
  519.  
  520. clr.w    d0
  521. move.b    25(a6),d0
  522. lsr.b    #4,d0
  523. tst.b    d0
  524. beq.s    mt_voldwn2
  525. bsr    mt_pushvol1
  526. bra.s    mt_noslide
  527.  
  528. mt_voldwn2:
  529. clr.w    d0
  530. move.b    25(a6),d0
  531. bsr    mt_pushvol2
  532.  
  533. mt_noslide:
  534. move.b    2(a6),d0
  535. and.b    #$0f,d0
  536. tst.b    d0
  537. beq    mt_arpegrt
  538. cmp.b    #3,d0
  539. beq    mt_arpegrt
  540. cmp.b    #4,d0
  541. beq    mt_arpegrt
  542. cmp.b    #5,d0
  543. beq    mt_arpegrt
  544. cmp.b    #1,d0
  545. beq.s    mt_portup
  546. cmp.b    #6,d0
  547. beq.s    mt_portup
  548. cmp.b    #7,d0
  549. beq.s    mt_portup
  550. cmp.b    #8,d0
  551. beq.s    mt_portup
  552. cmp.b    #2,d0
  553. beq.s    mt_portdwn
  554. cmp.b    #9,d0
  555. beq.s    mt_portdwn
  556. cmp.b    #10,d0
  557. beq.s    mt_portdwn
  558. cmp.b    #11,d0
  559. beq.s    mt_portdwn
  560. cmp.b    #13,d0
  561. beq.s    mt_volup
  562. rts
  563.  
  564. mt_portup:
  565. clr.w    d0
  566. move.b    3(a6),d0
  567. sub.w    d0,22(a6)
  568. cmp.w    #$71,22(a6)
  569. bpl.s    mt_ok1
  570. move.w    #$71,22(a6)
  571. mt_ok1:
  572. move.w    22(a6),6(a5)
  573. rts
  574.  
  575. mt_portdwn:
  576. clr.w    d0
  577. move.b    3(a6),d0
  578. add.w    d0,22(a6)
  579. cmp.w    #$358,22(a6)
  580. bmi.s    mt_ok2
  581. move.w    #$358,22(a6)
  582. mt_ok2:
  583. move.w    22(a6),6(a5)
  584. rts
  585.  
  586. mt_volup:
  587. clr.w    d0
  588. move.b    3(a6),d0
  589. lsr.b    #4,d0
  590. tst.b    d0
  591. beq.s    mt_voldwn
  592. mt_pushvol1:
  593. add.w    d0,$12(a6)
  594. cmp.w    #$40,$12(a6)
  595. bmi.s    mt_ok3
  596. move.w    #$40,$12(a6)
  597. mt_ok3:
  598. move.w    $12(a6),8(a5)
  599. rts
  600.  
  601. mt_voldwn:
  602. clr.w    d0
  603. move.b    3(a6),d0
  604. mt_pushvol2:
  605. and.b    #$0f,d0
  606. sub.w    d0,$12(a6)
  607. bpl.s    mt_ok4
  608. clr.w    $12(a6)
  609. mt_ok4:
  610. move.w    $12(a6),8(a5)
  611. rts
  612.  
  613. mt_arpegrt:
  614. cmp.l    #1,mt_counter
  615. beq.s    mt_loop2
  616. cmp.l    #2,mt_counter
  617. beq.s    mt_loop3
  618. cmp.l    #3,mt_counter
  619. beq.s    mt_loop4
  620. cmp.l    #4,mt_counter
  621. beq.s    mt_loop2
  622. cmp.l    #5,mt_counter
  623. beq.s    mt_loop3
  624. rts
  625.  
  626. mt_loop2:
  627. clr.l    d0
  628. move.b    3(a6),d0
  629. lsr.b    #4,d0
  630. bra.s    mt_cont
  631.  
  632. mt_loop3:
  633. clr.l    d0
  634. move.b    3(a6),d0
  635. and.b    #$0f,d0
  636. bra.s    mt_cont
  637.  
  638. mt_loop4:
  639. move.w    16(a6),d2
  640. bra.s    mt_endpart
  641.  
  642. mt_cont:
  643. lsl.w    #1,d0
  644. clr.l    d1
  645. move.w    16(a6),d1
  646. lea    mt_arpeggio,a0
  647. mt_loop5:
  648. move.w    (a0,d0),d2
  649. cmp.w    (a0),d1
  650. beq.s    mt_endpart
  651. addq.l    #2,a0
  652. bra.s    mt_loop5
  653.  
  654. mt_endpart:
  655. move.w    d2,6(a5)
  656. rts
  657.  
  658. mt_rout2:
  659. lea    mt_muzakdata,a0
  660. move.l    a0,a3
  661. add.l    #$0c,a3
  662. move.l    a0,a2
  663. add.l    #$1d8,a2
  664. add.l    #$258,a0
  665. move.l    mt_partnrplay,d0
  666. clr.l    d1
  667. move.b    (a2,d0),d1
  668. mulu    #$0400,d1
  669. add.l    mt_partnote,d1
  670. move.l    d1,mt_partpoint
  671. clr.w    mt_dmacon
  672.  
  673. move.l    #$dff0a0,a5
  674. lea    mt_aud1temp,a6
  675. bsr    mt_playit
  676.  
  677. move.l    #$dff0b0,a5
  678. lea    mt_aud2temp,a6
  679. bsr    mt_playit
  680.  
  681. move.l    #$dff0c0,a5
  682. lea    mt_aud3temp,a6
  683. bsr    mt_playit
  684.  
  685. move.l    #$dff0d0,a5
  686. lea    mt_aud4temp,a6
  687. bsr    mt_playit
  688.  
  689. move.l    #mt_speed,d0
  690. mt_rls:
  691. dbf    d0,mt_rls
  692.  
  693. move.l    #$8000,d0
  694. add.w    mt_dmacon,d0
  695. move.w    d0,$dff096
  696.  
  697. move.l    #mt_aud4temp,a6
  698. cmp.w    #1,14(a6)
  699. bne.s    mt_voice3
  700. move.l    10(a6),$dff0d0
  701. move.w    #1,$dff0d4
  702. mt_voice3:
  703. move.l    #mt_aud3temp,a6
  704. cmp.w    #1,14(a6)
  705. bne.s    mt_voice2
  706. move.l    10(a6),$dff0c0
  707. move.w    #1,$dff0c4
  708. mt_voice2:
  709. move.l    #mt_aud2temp,a6
  710. cmp.w    #1,14(a6)
  711. bne.s    mt_voice1
  712. move.l    10(a6),$dff0b0
  713. move.w    #1,$dff0b4
  714. mt_voice1:
  715. move.l    #mt_aud1temp,a6
  716. cmp.w    #1,14(a6)
  717. bne.s    mt_voice0
  718. move.l    10(a6),$dff0a0
  719. move.w    #1,$dff0a4
  720.  
  721. mt_voice0:
  722. move.l    mt_partnote,d0
  723. add.l    #$10,d0
  724. move.l    d0,mt_partnote
  725. cmp.l    #$400,d0
  726. bne.s    mt_stop
  727. clr.l    mt_partnote
  728. addq.l    #1,mt_partnrplay
  729. clr.l    d0
  730. move.w    mt_maxpart,d0
  731. move.l    mt_partnrplay,d1
  732. cmp.l    d0,d1
  733. bne.s    mt_stop
  734. clr.l    mt_partnrplay
  735. mt_stop:
  736. rts
  737.  
  738. mt_playit:
  739. move.l    (a0,d1),(a6)
  740. addq.l    #4,d1
  741. clr.l    d2
  742. move.b    2(a6),d2
  743. and.b    #$f0,d2
  744. lsr.b    #4,d2
  745. tst.b    d2
  746. beq.s    mt_nosamplechange
  747.  
  748. clr.l    d3
  749. lea    mt_samples,a1
  750. move.l    d2,d4
  751. mulu    #4,d2
  752. mulu    #$1e,d4
  753. move.l    (a1,d2),4(a6)
  754. move.w    (a3,d4),8(a6)
  755. move.w    2(a3,d4),18(a6)
  756. move.w    4(a3,d4),d3
  757. tst.w    d3
  758. beq.s    mt_displace
  759. move.l    4(a6),d2
  760. add.l    d3,d2
  761. move.l    d2,4(a6)
  762. move.l    d2,10(a6)
  763. move.w    6(a3,d4),8(a6)
  764. move.w    6(a3,d4),14(a6)
  765. move.w    18(a6),8(a5)
  766. bra.s    mt_nosamplechange
  767. mt_displace:
  768. move.l    4(a6),d2
  769. add.l    d3,d2
  770. move.l    d2,10(a6)
  771. move.w    6(a3,d4),14(a6)
  772. move.w    18(a6),8(a5)
  773. mt_nosamplechange:
  774. tst.w    (a6)
  775. beq.s    mt_retrout
  776. move.w    (a6),16(a6)
  777. move.w    20(a6),$dff096
  778. move.l    4(a6),(a5)
  779. move.w    8(a6),4(a5)
  780. move.w    (a6),6(a5)
  781. move.w    20(a6),d0
  782. or.w    d0,mt_dmacon
  783.  
  784. mt_retrout:
  785. move.w    20(a6),d0
  786. lsl.w    #4,d0
  787. add.w    20(a6),d0
  788. move.w    d0,$dff09e
  789.  
  790. tst.w    (a6)
  791. beq.s    mt_nonewper
  792. move.w    (a6),22(a6)
  793.  
  794. mt_nonewper:
  795. move.b    2(a6),d0
  796. and.b    #$0f,d0
  797. cmp.b    #14,d0
  798. bne.s    mt_noset
  799. move.w    2(a6),24(a6)
  800. rts
  801.  
  802. mt_noset:
  803. tst.b    3(a6)
  804. bne.s    mt_noclr
  805. clr.w    24(a6)
  806. mt_noclr:
  807. cmp.b    #3,d0
  808. beq.s    mt_modvol
  809. cmp.b    #6,d0
  810. beq.s    mt_modvol
  811. cmp.b    #9,d0
  812. beq.s    mt_modvol
  813. cmp.b    #4,d0
  814. beq.s    mt_modper
  815. cmp.b    #7,d0
  816. beq.s    mt_modper
  817. cmp.b    #10,d0
  818. beq.s    mt_modper
  819. cmp.b    #5,d0
  820. beq.s    mt_modvolper
  821. cmp.b    #8,d0
  822. beq.s    mt_modvolper
  823. cmp.b    #11,d0
  824. beq.s    mt_modvolper
  825. cmp.b    #15,d0
  826. beq.s    mt_chgspeed
  827. cmp.b    #12,d0
  828. bne.s    mt_nochnge
  829. move.b    3(a6),8(a5)
  830. mt_nochnge:
  831. rts
  832.  
  833. mt_chgspeed:
  834. move.b    3(a6),d0
  835. and.b    #$0f,d0
  836. beq.s    mt_nochnge
  837. clr.l    mt_counter
  838. move.b    d0,mt_cool+5
  839. rts
  840.  
  841. mt_modvol:
  842. move.w    20(a6),d0
  843. bra.s    mt_push
  844.  
  845. mt_modper:
  846. move.w    20(a6),d0
  847. lsl.w    #4,d0
  848. bra.s    mt_push
  849.  
  850. mt_modvolper:
  851. move.w    20(a6),d0
  852. lsl.w    #4,d0
  853. add.w    20(a6),d0
  854.  
  855. mt_push:
  856. add.w    #$8000,d0
  857. move.w    d0,$dff09e
  858. rts
  859.  
  860. mt_aud1temp:
  861. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  862. dc.w $0000,$0000,$0001,$0000,$0000
  863. mt_aud2temp:
  864. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  865. dc.w $0000,$0000,$0002,$0000,$0000
  866. mt_aud3temp:
  867. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  868. dc.w $0000,$0000,$0004,$0000,$0000
  869. mt_aud4temp:
  870. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  871. dc.w $0000,$0000,$0008,$0000,$0000
  872. mt_partnote:
  873. dc.l 0
  874. mt_partnrplay:
  875. dc.l 0
  876. mt_counter:
  877. dc.l 0
  878. mt_partpoint:
  879. dc.l 0
  880. mt_samples:
  881. dc.w $0000,$0000
  882. mt_sample1:
  883. dc.l 0
  884. mt_sample2:
  885. dc.l 0
  886. mt_sample3:
  887. dc.l 0
  888. mt_sample4:
  889. dc.l 0
  890. mt_sample5:
  891. dc.l 0
  892. mt_sample6:
  893. dc.l 0
  894. mt_sample7:
  895. dc.l 0
  896. mt_sample8:
  897. dc.l 0
  898. mt_sample9:
  899. dc.l 0
  900. mt_sample10:
  901. dc.l 0
  902. mt_sample11:
  903. dc.l 0
  904. mt_sample12:
  905. dc.l 0
  906. mt_sample13:
  907. dc.l 0
  908. mt_sample14:
  909. dc.l 0
  910. mt_sample15:
  911. dc.l 0
  912. mt_maxpart:
  913. dc.w $0000
  914. mt_kn1:
  915. dc.w $0000
  916. mt_dmacon:
  917. dc.w $0000
  918.  
  919. mt_arpeggio:
  920. dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c
  921. dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d
  922. dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0
  923. dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097
  924. dc.w $008f,$0087,$007f,$0078,$0071,$0000,$0000,$0000
  925.  
  926. mt_snd1:    blk.b    3000,0
  927. mt_snd2:    blk.b    3400,0
  928. mt_snd3:    blk.b    3000,0
  929. mt_snd4:    blk.b    4800,0
  930. mt_snd5:    blk.b    8900,0
  931. mt_snd6:    blk.b    9900,0
  932. mt_snd7:    blk.b    9400,0
  933. mt_snd8:    blk.b    2000,0
  934. mt_snd9:    blk.b    5000,0
  935. mt_snda:    blk.b    2000,0
  936. mt_sndb:    blk.b    9200,0
  937. mt_sndc:    blk.b    6900,0
  938. mt_sndd:    blk.b    9900,0
  939. mt_snde:    blk.b    5300,0
  940. mt_sndf:    blk.b    1200,0
  941.  
  942. mt_muzakdata:    blk.b    20000,0
  943.